Skip to content

feat(gametheory,#14450): oracles réflexifs — tranches 2..N, restriction finie vérifiée, CDT/EDT, frontière - #16265

Merged
jsboige merged 2 commits into
mainfrom
feature/14450-reflective-oracles-t2
Sep 15, 2026
Merged

jsboige merged 2 commits into
mainfrom
feature/14450-reflective-oracles-t2

Conversation

@jsboige

@jsboige jsboige commented Sep 15, 2026

Copy link
Copy Markdown
Owner

Contexte

#14450 (grain deep-queue Q1 pour la lane myia-po-2023:CoursIA) : après la tranche 1 (squelette, PR #14618 mergée), cette PR livre les tranches 2..N — le notebook GameTheory-04e-Reflective-Oracles complet, exécuté, avec vérificateur indépendant. Source : Fallenstein/Taylor/Christiano, Reflective Oracles (arXiv 1508.04145).

Livrable

GameTheory-04e-Reflective-Oracles.ipynb — 39 cellules (18 code, 21 markdown), reconstruit depuis le squelette de 20 cellules :

  • §1 Matching Pennies déterministe : sweep des paires pures, meilleure réponse mutuelle — « AUCUNE » paire pure, motivation de l'auto-référence. Exercice 1.
  • §2 Requête réflexive (M, p) : ReflexiveQuery bornée par N_QUERIES_MAX=64 (compteur global d'appels, bornes mesurées pas assertées), cohérence sur machine avec état vs StatefulMachine anti-exemple rejetée. Exercice 2.
  • §3 Menteur probabiliste : orbite x_{k+1}=1−x_k de période 2 (pas de point fixe) → point cohérent q=1/2 via résidu |q−(1−q)| ; moyenne empirique 0.5030 ∈ [0.4850, 0.5150] (3σ). Exercice 3.
  • §4 CDT vs EDT (théorème 3.1) : Chasse au Cerf corrélée JOINTE=[[0.32,0.08],[0.08,0.52]] — CDT choisit strictement Lièvre (1.6 < 2), EDT Cerf (3.2 > 2), écart strict (pas d'égalité argmax). Exercice 4.
  • §5 Nash par déviations unilatérales (théorème 4.1) : is_nash indépendant sans solveur — accepte le profil intégré, rejette un profil arbitraire.
  • §6 Restriction finie (théorème 5.1) : ensemble de requêtes Q = 5 programmes × 5 probabilités = 25 ≤ 64 ; fermeture par BFS exhaustif (règle successeur (p+b)/2 arrondie à la grille, DEPTH_MAX=2) — exactement 50 appels, delta mesuré ; jeu auxiliaire 5×5 via nashpy support_enumeration (49 équilibres, dégénéré) ; contrainte de réflexivité = croyances auto-réalisatrices (résidu mass-weighted |croyance c − π_opposant[0]|) → 2/49 équilibres réflexivement cohérents. Exercice 5.
  • §7 Frontière de l'implémentation : Kakutani en dimension infinie NON implémenté, restriction = cas particulier favorable — dits explicitement.
  • §8 Conclusion.

Discipline anti-tautologie (héritée du pattern perturbed_br #7664) : chaque vérificateur est montré rejetant un contre-exemple — le vérificateur §6 rejette 47/49 équilibres et les 2 contre-épreuves (solution perturbée résidu 2.0, profil arbitraire non-Nash résidu 0.87). Un vérificateur qui ne sait dire que « oui » ne vérifie rien.

Acceptance criteria (#14450)

Critère État
Exemple cyclique auto-référentiel discriminant §1+§3 (paires pures + orbite période 2)
Restriction finie : ensemble de requêtes + fermeture + borne déclarés §6a — finie/fermée/bornée, True/True/True, mesures chiffrées
Vérificateur de réflexivité indépendant §5 + §6 (résidu + validité simplexe + Nash solveur-free)
Nash vérifié par déviations unilatérales §5 is_nash
« Frontière de l'implémentation » §7
≥3 exercices C.1 après leurs exemples 5 exercices (Ex. 1..5), stubs pass/return None, zéro raise NotImplementedError
Exécution complète + preuve Papermill ci-dessous
Cross-refs sortantes (04/04b/04c/11/DecInfer-1) + entrantes (04/04b/04c + README) ajoutées (liens entrants markdown-only)

Validation

  • Papermill end-to-end (kernel python3) : 39 cellules, séquence execution_count 1..18 complète, 0 erreur, 3.46 s, 1 figure PNG (résidu de l'orbite). metadata.papermill.input/output_path normalisés au basename.
  • validate_pr_notebooks.py origin/main <04e> → 1/1 PASSED (18 cellules).
  • Frères 04/04b/04c : 3/3 PASSED (49 cellules), diffs markdown-only (0 cellule code ajoutée) → exception C.2 (outputs précédents valides). 04b (kernel lean4-wsl) : markdown-only, non ré-exécuté (⛔ Lean/WSL interdits sur po-2023 — user stop 30/08).
  • README : ligne 4e mise à jour seule ; marqueurs CATALOG-STATUS intacts ; catalogue COURSE_CATALOG.* byte-identique à main (règle chore(catalog): catalogue hors-branche cron-only — stopper le silent-revert au merge (decision user 07/06) #2632).
  • Scan path-leak sources+outputs : 0 hit réel (1 FP = URL arXiv).
  • grep -cE "raise NotImplementedError|assert False|1/0" sur cellules code : 0.

SOTA (EPIC #3801)

SOTA-OK — le vrai outil est utilisé : nashpy (support_enumeration) pour le jeu auxiliaire, NumPy pour le reste ; aucune sortie de substitution. Prong B : le problème est discriminant — le solveur retourne 49 équilibres dégénérés que la contrainte de réflexivité départage (2/49), pas un cas trivial.

Limites honnêtes

  • La restriction finie est un cas particulier favorable (grille 5 valeurs, profondeur 2) — nommé comme tel en §6/§7.
  • Kakutani dimension infinie / oracle universel : non implémentés, dits en §7.
  • « Honnêteté » imprimée en §2/§4 : ce qui est construit vs vérifié.

Périmètre : GameTheory-04e-Reflective-Oracles.ipynb (nouveau contenu) + liens entrants markdown-only dans GameTheory-04/04b/04c + ligne README 4e.

Grain: DEEP/notebook-python — lane myia-po-2023:CoursIA — prev: MED/tooling #16255

Closes #14450

🤖 Generated with Claude Code

…ee, CDT/EDT, frontiere fini/universel

GameTheory-04e rebuild du squelette (tranche 1 #14618) en 39 cellules executees :
menteur probabiliste (orbite periode 2 -> point coherent q=1/2), theoreme 3.1
CDT vs EDT (ecart strict sur Chasse au Cerf correlee), Nash par deviations
unilateraires (is_nash sans solveur), restriction finie-fermee-bornee mesuree
(25 programmes, fermeture BFS, 50 appels), jeu auxiliaire nashpy 49 equilibres
dont 2 reflexivement coherents, verificateur independant + 2 contre-epreuves
rejetees, frontiere explicite (Kakutani dimension infinie non implémentee).
Liens entrants markdown-only depuis 04/04b/04c + ligne README 4e.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2023:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-15) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 4
  • Code cells validated: 67
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@github-actions

github-actions Bot commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 6.5s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 8.1s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 9.8s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 10.5s
Search-01-StateSpace.ipynb ✅ SUCCESS 8.2s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 5.8s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 57.8s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 7.6s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw]
VERDICT: LGTM (vérifié: outputs réels du notebook 04e au head 92f7bad — ancrage de tous les chiffres porteurs du body)

Revue structurelle (fenêtre de contexte — pas un full-diff). Chaque assertion ci-dessous a été mesurée sur le contenu du notebook au head, pas recopiée du body.

Structure — conforme au body au chiffre près : 39 cellules (18 code / 21 markdown), execution_count 1..18 complet, 0 erreur dans les outputs, 0 pattern banni (NotImplementedError/assert False/1/0 = 0), toutes les cellules code portent des outputs (H.4), 5 exercices ×2 mentions (énoncé + renvoi), 5 stubs return None.

Ancrage des chiffres du body dans les outputs (classe #16066 — un chiffre publié se re-mesure) :

  • §1 « AUCUNE paire pure » → imprimé : Paires en equilibre pur : AUCUNE ✓
  • §3 « 0.5030 ∈ [0.4850, 0.5150] (3σ) » → imprimé : moyenne empirique = 0.5030 / intervalle 3-sigma = [0.4850, 0.5150] ✓
  • §4 CDT/EDT → tableau imprimé Cerf 1.6000 3.2000 / Lievre 2.0000 2.0000 ; c1 = 0.8 > 0.5 porte U_EDT(Cerf) a 3.2 > 2 ; l'arithmétique tient : 0.32/0.40 = 0.80 (matrice JOINTE [[0.32,0.08],[0.08,0.52]] au source) ✓
  • §6 « 25 ≤ 64 » → |PROGRAMMES| = 5 |PROBAS| = 5, |Q| = 25 (borne 64, respectée -> True) ; « exactement 50 appels » → appels oracle consommes par l'enumeration : 50 / 64 ; VERDICT 6a : finie=True fermee=True bornee=True ✓ ; « 2/49 » → equilibres reflexivement COHERENTS : 2 / 49 ✓
  • Discipline anti-tautologie réelle : le vérificateur imprime des ACCEPTS (Nash=True) et des rejets (residu_reflexif = 0.8700 nash = False verdict = INCOHERENT, 47/49 rejetés) — il sait dire non.
  • SOTA : nashpy 0.0.43 chargé et support_enumeration au source — le vrai outil est utilisé, pas substitué.

Satellites — 04/04b/04c : exactement +1 ligne markdown chacun (bloc « Prolongement computationnel »), zéro cellule code touchée → exception C.2 markdown-only tenue ; README : 1 ligne (table 4e). Frontière §7 explicite (Kakutani dimension infinie non implémenté, restriction = cas particulier favorable).

Notes mineures (non bloquantes) :

  1. L'advisory CI prose/output (« a numeric value is not anchored… ») : ma passe manuelle sur tous les chiffres porteurs du body n'en a trouvé aucun non ancré. Si le JSON artifact (markdown-claims-output-report) pointe un cas précis, il mérite un regard lane-side ; côté review, rien à objecter.
  2. 04b/04c : perte du newline final (\ No newline at end of file) — cosmétique, sans effet sur le parsing.

Le dossier me paraît tranchable côté merge.

…parity rebaseline (04/04c)

- 04e : reinserer verbatim les enonces formels de la tranche 1 (definition
  requete reflexive, coherence/reflexivite stricte, contradiction diagonale
  du menteur, theoremes 3.1/4.1, bullets Finie/Ferme/Bornee, intro
  pedagogique) — survie markdown 24% -> >50%, motif Objectif restaure
  (MD_REWRITE et LOST_MOTIF resolus a la source, pas d'ack body).
- twin_pairs.d : attestation des nouvelles blob SHA des paires
  GameTheory-4 NashEquilibrium et GameTheory-4c NashExistence (liens
  markdown-only entrants, DRIFT_INTRODUCED -> 0).

Markdown-only sur le 04e : aucune cellule code touchee, outputs committes
valides (exception C.2).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 15, 2026
…operation)

Le correctif markdown de GT-04c deplace le blob C# -- la paire derivait
(`25e04d66 -> f2745ce7`). Rebaseline lancee EN DERNIER, apres le commit du
notebook, pour qu'aucune normalisation outillee ulterieure ne deplace le blob
sous l'attestation (#8957).

Index `0010` derive par l'outil lui-meme (`len(glob)+1`), pas choisi a la main :

  GameTheory-4c NashExistence/ 0001..0009  -> 0010-2026-09-15-myia-po-2026-CoursIA.yaml

SHAs de l'attestation verifies contre `git rev-parse HEAD:<path>` :
  csharp_sha 29143b4  = HEAD:<csharp>  OK
  python_sha 789d317  = HEAD:<python>  OK

`check_twin_parity.py` : la paire repasse OK (DRIFT 4 -> 3 ; les 3 restants --
Probas-16 Sparse-Gaussian-Process, SW-2 RDF-Basics, SW-7 OWL -- sont
pre-existants et hors de cette PR).

Coordination #16265 : sa branche ajoute `0009-2026-09-15-myia-po-2023-CoursIA.yaml`
alors que celle-ci porte deja `0009-2026-09-13-myia-po-2026-CoursIA.yaml`. Les
deux index 0009 ne cassent pas `_latest_audit` : le tri par nom reste l'ordre
d'append (`0009-09-13` < `0009-09-15` < `0010-09-15`), donc la derniere
attestation est bien la plus fraiche dans les deux ordres de merge. Constat
signale sur la PR plutot que de renommer le fichier d'une autre lane.

See #13410
@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #16265 (feat(gametheory,#14450): oracles réflexifs — tranches 2..N, restriction finie vérifiée, CDT/EDT, frontière) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VERDICT: LGTM

[Hermes] — review de #16265 (GameTheory-04e-Reflective-Oracles, tranches 2..N de #14450).

Vérifications effectuées sur le diff (head 78c6596de3a4) :

  1. Authenticité outputs — 14 cellules code, execution_count 5..18 tous non-null, papermill.exception=false ×39, status=completed ×39, durées mesurées (Σ 7.1 s, max 3.485 s), timestamps 2026-09-15T06:32Z cohérents avec la création PR (06:40Z). Pas de prints statiques.
  2. Maths §4 recalculées indépendamment — JOINTE=[[0.32,0.08],[0.08,0.52]] : b=0.32+0.08=0.40, c₁=0.32/0.40=0.80 → U_CDT(Cerf)=4b=1.6 < 2 (Lièvre), U_EDT(Cerf)=4c₁=3.2 > 2 (Cerf). Conforme aux outputs affichés ; écart strict bien réel.
  3. Anti-tautologie §6 vérifiée dans les outputs — le tableau des 49 équilibres affiche les résidus (0.25..1.0 INCOHERENT, 2/49 COHERENT) et les contre-épreuves sont rejetées (résidu 2.0000, profil arbitraire 0.87 + nash=False). Le vérificateur discrimine réellement.
  4. §6a restriction — |Q|=25 ≤ 64 affiché, fermeture BFS True (15 requêtes atteignables ⊆ Q), 50/64 appels comptés. Mesuré, pas asserté.
  5. Security scan — grep HF_TOKEN|API_KEY|BEARER|PASSWORD|SECRET|TOKEN= sur le diff : 0 hit. Path-leak : rien de réel.
  6. Frères 04/04b/04c — diffs markdown-only confirmés (liens entrants vers 04e uniquement), README ligne 4e seule modifiée. Twin pairs YAML cohérents.

Exercices laissés en TODO étudiant (Exo 1/2 avec A_exo1=None) — conforme au pattern pédagogique du corpus, outputs TODO explicites.

(contrainte token : COMMENT only — cap #15511, opener jsboige)

[Hermes hermes-pr-review, cycle :14 15/09, host c92df397a786]

@jsboige
jsboige merged commit e86bf62 into main Sep 15, 2026
86 of 87 checks passed
myia-ai-01 pushed a commit that referenced this pull request Sep 16, 2026
…4c-nashexistence + writer max+1 (#16380)

Rouge base-inherited sur Scripts Tests (CPU) fleet-wide : prefixe 0009 duplique
(po-2026 09-13 vs po-2023 09-15), puis 0010 duplique en cascade. Renumrotation
par ordre d'append reel (mergedAt #16265 23:06Z < #16029 23:28Z). Cause racine :
_append_audit_file calculait len(files)+1 — comptage, pas max+1 : deux lanes en
course de branche emettent le meme index. Durcissement : _next_audit_index
(max+1) + garde anti-ecrasement disque (avance l'index si le fichier existe).
5829 tests notebook_tools verts post-fix, audit 157 paires : 0 autre doublon.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 18, 2026
…16265 (#16678)

Le merge e86bf62 (#16265, oracles reflexifs) a deplace le blob SHA du
jumeau Python de la paire GameTheory-4c NashExistence (1 ligne markdown :
lien "Prolongement computationnel" vers le 04e) APRES les attestations
0009/#16265 et 0011/po-2026 (2026-09-15) -- registre stale sur main,
jambe GT-4c du gate twin rouge pour toute PR ulterieure (#16626/#16670).

Attestation 0012 (by myia-po-2023:CoursIA) + ligne known_differences.
Spot-audit : markdown-only, zero cellule code, csharp inchange, le 04e
n'existe qu'en Python (asymetrie navigationnelle legitime).

Verification locale : --per-pair --base origin/main -> ok=156,
drift_introduced=0, drift_resolved=1 (total 157).

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

GameTheory 04e — Oracles réflexifs, décision causale et équilibre de Nash

2 participants